// /common/http.api.js

// 如果没有通过拦截器配置域名的话，可以在这里写上完整的URL(加上域名部分)
// let hotSearchUrl = '/ebapi/store_api/hot_search';
// let indexUrl = '/ebapi/public_api/index';

// 此处第二个参数vm，就是我们在页面使用的this，你可以通过vm获取vuex等操作，更多内容详见uView对拦截器的介绍部分：
// https://uviewui.com/js/http.html#%E4%BD%95%E8%B0%93%E8%AF%B7%E6%B1%82%E6%8B%A6%E6%88%AA%EF%BC%9F
const install = (Vue, vm) => {
	
	/**
	 * 是否登录判断
	 */
	const isLogin = () => {
		const token = vm.$store.state.vuex_token;

		//如果没有token，跳转到登录
		if(!token){
			//来自那个页面
			const currentPage = getCurrentPages().pop()
			// 获取 请求参数 和 页面路径
			const {options,route} = currentPage;
			const optionsKeys = Object.keys(options);
			let params = ''
			if(optionsKeys.length !== 0){
				params = optionsKeys.reduce((pre,current)=>{
					//return pre + current + '=' + options[current] + '&'
					return `${pre}${current}=${options[current]}&`
				},'?').slice(0,-1)
			}
			//缓存当前页，用于登录或注册之后跳转
			uni.setStorageSync("back_url", route + params)
			vm.$u.toast('你还未登录，请先登录！')
			setTimeout(()=>{
				vm.$u.route({
					type: 'redirect',
					url: '/pages/auth/login'
				})
			},1500)
			return false;
		}
		return true;
	};
	
	/**
	 * 更新用户信息，更新vuex_user
	 */
	const upadtaUser = async ()=>{
		//请求用户信息
		const user = await vm.$u.api.userInfo() 
		// 缓存用户信息
		vm.$u.vuex('vuex_user',user)
	}
	// 将各个定义的接口名称，统一放进对象挂载到vm.$u.api(因为vm就是this，也即this.$u.api)下
	vm.$u.utils = {
		isLogin,
		upadtaUser
		};
}

export default {
	install
}